%ifndef PAGED_SEGMENTATION
%define PAGED_SEGMENTATION
%include "Boot/SegmentDescriptor.S"
%define PAGED_ARDST_BASE ((768 << 22) + (98 << 12))
%define PAGED_GDT_BASE ((768 << 22) + (0 << 12) + 0xE00)
%define PAGED_APIC_MAPPING ((768 << 22) + (99 << 12))
%define PAGED_CORE_THREAD_MAPPING ((768 << 22) + (100 << 12))
%define PAGED_CODE_SEGMENT  (SEGMENT_DESCRIPTOR_LIMIT | SEGMENT_DESCRITOR_BASE | SEGMENT_DESCRIPTOR_TYPE_CODE | SEGMENT_DESCRIPTOR_S_CODEDATA | SEGMENT_DESCRIPTOR_PRESENT | SEGMENT_DESCRIPTOR_DEFAULT32_BIG | SEGMENT_DESCRIPTOR_4KiB_GRANULARITY)
%define PAGED_DATA_SEGMENT  (SEGMENT_DESCRIPTOR_LIMIT | SEGMENT_DESCRITOR_BASE | SEGMENT_DESCRIPTOR_TYPE_WRITE_READ | SEGMENT_DESCRIPTOR_S_CODEDATA | SEGMENT_DESCRIPTOR_PRESENT | SEGMENT_DESCRIPTOR_DEFAULT32_BIG | SEGMENT_DESCRIPTOR_4KiB_GRANULARITY)
; Graphic Color Mode base=0xC000_2000
%define PAGED_VIDEO_COLOR_SEGMENT ((0x000F) | (0x2000 << 16) | (0x00 << 32) | (0xC0 << 56) | SEGMENT_DESCRIPTOR_TYPE_WRITE_READ |  SEGMENT_DESCRIPTOR_S_CODEDATA | SEGMENT_DESCRIPTOR_PRESENT | SEGMENT_DESCRIPTOR_DEFAULT32_BIG | SEGMENT_DESCRIPTOR_4KiB_GRANULARITY)
; Graphic Black-White Mode base=0xC001_2000
%define PAGED_VIDEO_BLACKWHITE_SEGMENT ((0x0007) | (0x2000 << 16) | (0x01 << 32) | (0xC0 << 56)| SEGMENT_DESCRIPTOR_TYPE_WRITE_READ |  SEGMENT_DESCRIPTOR_S_CODEDATA | SEGMENT_DESCRIPTOR_PRESENT | SEGMENT_DESCRIPTOR_DEFAULT32_BIG | SEGMENT_DESCRIPTOR_4KiB_GRANULARITY)
; Graphic Text Mode base=0xC001_A000
%define PAGED_VIDEO_TEXT_SEGMENT ((0x0007) | (0xA000 << 16) | (0x01 << 32) | (0xC0 << 56) | SEGMENT_DESCRIPTOR_TYPE_WRITE_READ |  SEGMENT_DESCRIPTOR_S_CODEDATA | SEGMENT_DESCRIPTOR_PRESENT | SEGMENT_DESCRIPTOR_DEFAULT32_BIG | SEGMENT_DESCRIPTOR_4KiB_GRANULARITY)
%endif